#ifndef SIGNALSLICE_H
#define SIGNALSLICE_H

#include "dataframeiterator.h"
#include "datetime.h"

namespace biosignal {

class BioSignal;

struct Data {
    double* data;
    int values;
    string label;
    double sample_rate;
};

class SignalSlice {
public:
    SignalSlice() {
    }
    SignalSlice(const BioSignal* biosignal, TimePeriod time_period, shared_ptr<const montage::Montage> montage =
                    shared_ptr<const montage::Montage> ());

    //	SignalSlice(const SignalSlice& other);
    DataFrameIterator begin() const;
    DataFrameIterator end() const;
    const BioSignal* biosignal() const;
    shared_ptr<const montage::Montage> montage() const;

    std::list<Data> all_data() const;
    TimePeriod time_period() const;
private:
    const BioSignal* m_biosignal;
    TimePeriod m_time_period;
    shared_ptr<const montage::Montage> m_montage;
};

}

#endif /* SIGNALSLICE_H */
